
import axios from "axios";
import store from "../store";
import {Toast} from "vant";

// 1、直接在axios上全局配置，那么，所有的请求，都会使用该配置
// axios.defaults.baseURL = "http://121.89.205.189:3000/api/";

// 2、创建了axios的实例，设置的全局配置，那么，只有用该实例发送请求，才会使用该配置。
const service = axios.create({
    baseURL: "http://121.89.205.189:3000/api/"
});

// 请求拦截器和响应拦截器
// 每个请求都会先调用请求拦截器，再到后端
service.interceptors.request.use((config) => {

    // 1、让loading显示（commit是提交mutation）
    store.commit({
        type: "showLoading"
    });
    // console.log("请求拦截器store.state.loading",store.state.loading);
    // 或者调用setLoading
    // store.commit({
    //     type:"setLoading",
    //     isShow:true
    // });

    // 2、请求拦截器(把token携带在请求头上。请求头是config对象的headers属性)
    if (sessionStorage.getItem("token")) {
        config.headers.token = sessionStorage.getItem("token");
    }

    return config
});

// 每个请求响应回来时，都会先调用响应拦截器，再到axios的then函数里
service.interceptors.response.use((res) => {
    // 1、让loading隐藏(commit是提交mutation）
    store.commit({
        type: "hideLoading"
    });
    // console.log("响应拦截器store.state.loading",store.state.loading);

    // 或者调用setLoading
    // store.commit({
    //     type:"setLoading",
    //     isShow:false
    // });

    // 2、所有的token无效都在此处做处理
    if (res.data.code === "10119") {
       alert("token无效");
    }

    return res;
}, (err) => {
    console.log("响应出错：err", err);
});


export default service;
